package config

import (
	"github.com/gofiber/fiber/v2"
	"time"
)

// ===================================== 公共常量 =====================================
const (
// 数据范围缓存
)

// ==================================== 公共model ====================================

// 一个公共的model
type BaseModel struct {
	Id         string    `query:"id" json:"id" form:"id"`
	CreatorId  *string   `json:"creatorId" form:"creatorId"`
	CreateTime time.Time `json:"createTime" form:"createTime"`
	UpdateId   *string   `json:"updateId" form:"updateId"`
	UpdateTime *string   `json:"updateTime" form:"updateTime"`
	Token      string    `gorm:"-" json:"token" form:"token"` // token
}

// 统一的返回参数格式
type Result struct {
	Code    int    `json:"code"`    // 统一的返回码，0 成功 -1 失败
	Message string `json:"message"` // 统一的返回信息
	Data    any    `json:"data"`    // 统一的返回数据
}

// 自定义配置
type CustomConfig struct {
	User int
	//InitPassword string        // 默认初始化密码
	//TokenTime    time.Duration // token有效时长，单位为秒，默认为一个小时
	//IsMultile    bool          // 是否允许多端登录（true 允许 false 不允许）
	//FilePath     string        // 文件上传路径
}

// 请求成功的默认返回
func Success(obj any) *Result {
	return &Result{200, "ok", obj}
}
func DefaultSuccess() *Result {
	return &Result{200, "ok", ""}
}

// 请求失败的默认返回，code默认为-1
func Error(message string) *Result {
	return ErrorCode(500, message)
}

// 请求失败的默认返回
func ErrorCode(code int, message string) *Result {
	return &Result{code, message, nil}
}

// 分页结构体封装
type PageInfo struct {
	List  any   `json:"list"`  // 返回结果
	Total int64 `json:"total"` // 返回总数
}

// 定义一个结构体，用于扩展接口路由信息
type CustomApi struct {
	Group       string        // 所属组
	Method      string        // 请求方法
	Path        string        // 接口地址
	Description string        // 接口描述
	Permission  string        // 权限标识（没有限制时留空，多个用 ; 号分隔，表示满足任意一个即可）
	HandlerFunc fiber.Handler // 请求处理函数
}
